//
// Created by lenovo on 2024/8/28.
//

#ifndef PHYENGINE_UTIL_VECOPT_H
#define PHYENGINE_UTIL_VECOPT_H
#include <SFML/System/Vector2.hpp>
#include <cmath>

namespace Util{

        // 计算点积
        float dot(const sf::Vector2f& a, const sf::Vector2f& b) {
            return a.x * b.x + a.y * b.y;
        }

    // 计算向量长度
    float length(const sf::Vector2f& v) {
        return std::sqrt(v.x * v.y + v.y * v.y);
    }

    // 计算向量归一化
    sf::Vector2f normalize(const sf::Vector2f& v) {
        float len = length(v);
        if (len != 0) {
            return sf::Vector2f(v.x / len, v.y / len);
        }
        return v;
    }

    // 计算两个向量之间的距离
    float distance(const sf::Vector2f& a, const sf::Vector2f& b) {
        return length(a - b);
    }

}
#endif //PHYENGINE_UTIL_VECOPT_H
